<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>promise.all</title>
</head>

<body>
  <script>

    // promise 也是一个函数  ，用来创建对象 new  构造函数

    // Promise.all([p1,p2,p3...])
    let p1 = new Promise((res, rej) => {
      setTimeout(() => {
        const num = parseInt(Math.random() * 20);
        if (num <= 10) {
          res(num + '第一次promise')
        } else {
          rej(num + '第一次promise')
        }
      }, 1000);
    })

    let p2 = new Promise((res, rej) => {
      setTimeout(() => {
        const num = parseInt(Math.random() * 20);
        if (num <= 10) {
          res(num + '第二次promise')
        } else {
          rej(num + '第二次promise')
        }
      }, 1000);
    })

    let pp = Promise.all([p1, p2])
    console.log(pp)

    // 两个都成功  返回一个数组，这个数组的结果也是按照原来的顺序排列的
    // 第一个失败  11
    // 第二个失败
    // 谁先失败就把谁的结果作为最终的失败的结果
    pp.then(
      data => {
        console.log(data)
      }
    ).catch(
      // 谁先失败就把谁的结果作为最终的失败的结果
      err => {
        console.log(err)
      }
    )
  </script>
</body>

</html>